//package com.zhz.mall.common.xxljob;
//
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.lang.Assert;
//import cn.hutool.core.lang.Validator;
//import cn.hutool.core.util.StrUtil;
//import com.xxl.job.core.biz.model.ReturnT;
//import com.zhz.mall.common.api.CommonResult;
//import com.zhz.mall.common.api.ResultCode;
//import com.zhz.mall.common.util.ExceptionUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.lang.Nullable;
//
//import java.time.LocalDate;
//import java.util.HashSet;
//import java.util.List;
//import java.util.Set;
//import java.util.function.Supplier;
//
///**
// * XxlJobUtils
// * <p>
// * xxl job 工具类
// *
// * @author zhouhengzhe
// */
//@Slf4j
//public abstract class XxlJobUtils {
//
//    /**
//     * 执行任务
//     *
//     * @param taskName 任务名称
//     * @param param    任务参数
//     * @param task     任务
//     * @return 执行结果
//     */
//    public static ReturnT<String> doExecute(String taskName, String param, Runnable task) {
//        return doExecute(taskName, param, () -> {
//            task.run();
//            return CommonResult.success();
//        });
//    }
//
//
//    /**
//     * 执行任务
//     *
//     * @param taskName 任务名称
//     * @param param    任务参数
//     * @param task     任务
//     * @return 执行结果
//     */
//    public static ReturnT<String> doExecute(String taskName, String param, Supplier<CommonResult> task) {
//        long start = System.currentTimeMillis();
//        log.info("定时任务[{}]开始执行, 任务参数: {}", taskName, param);
//        try {
//            CommonResult result = task.get();
//            Assert.state(result.getCode()== ResultCode.SUCCESS.getCode(), result.getMessage());
//            long end = System.currentTimeMillis();
//            log.info("定时任务[{}]执行成功, 耗时: {}", taskName, (end - start));
//            return ReturnT.SUCCESS;
//        } catch (Throwable cause) {
//            long end = System.currentTimeMillis();
//            log.error("定时任务[{}]执行异常: {}, 耗时: {}", taskName, ExceptionUtils.getMessage(cause), (end - start), cause);
//            return error(cause);
//        }
//    }
//
//
//
//    public static ReturnT<String> success(String msg) {
//        msg = StrUtil.blankToDefault(msg, "执行成功");
//        return new ReturnT<>(ReturnT.SUCCESS_CODE, msg);
//    }
//
//
//    public static ReturnT<String> error(Throwable cause) {
//        String msg = ExceptionUtils.getMessage(cause);
//        return new ReturnT<>(ReturnT.FAIL_CODE, msg);
//    }
//
//
//    /**
//     * 解析邮箱地址（多个邮箱以逗号分隔）
//     *
//     * @param param 任务参数
//     * @return 邮箱地址
//     */
//    @Nullable
//    public static Set<String> resolveEmails(String param) {
//        if (StrUtil.isBlank(param)) {
//            return null;
//        }
//
//        List<String> emails = StrUtil.splitTrim(param, StrUtil.COMMA);
//        for (String email : emails) {
//            Validator.validateEmail(email, "邮箱地址非法");
//        }
//
//        return new HashSet<>(emails);
//    }
//
//
//    /**
//     * 解析日期
//     * 注：日期格式支持 yyyyMMdd 和 yyyy-MM-dd
//     */
//    @Nullable
//    public static LocalDate resolveLocalDate(String param) {
//        return resolveLocalDate(param, null);
//    }
//
//
//    /**
//     * 解析日期
//     * 注：日期格式支持 yyyyMMdd 和 yyyy-MM-dd
//     */
//    public static LocalDate resolveLocalDate(String param, LocalDate defaultValue) {
//        if (StrUtil.isBlank(param)) {
//            return defaultValue;
//        }
//        return DateUtil.toLocalDateTime(DateUtil.parse(param)).toLocalDate();
//    }
//
//
//    /**
//     * 解析数字
//     */
//    @Nullable
//    public static Integer resolveInteger(String param) {
//        if (StrUtil.isBlank(param)) {
//            return null;
//        }
//        return Integer.parseInt(param);
//    }
//
//
//}
